
package com.boot.service;

import com.baomidou.mybatisplus.service.IService;
import com.boot.entity.Ad;
import com.boot.entity.Feed;
import com.boot.entity.User;
import com.boot.entity.UserLocation;
import com.boot.util.AdResult;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;


public interface UserService extends IService<User> {
	

	public User login(HashMap<String, Object> params);
	
	/** 用户注册接口,用户注册用户
	 * @param phone
	 * @param password
	 * @param code
	 * @return 
	 * @throws Exception 
	 */
	public AdResult register(String username,String phone, String login_password, Integer code) throws Exception;

	/**用户注册时获取验证码接口
	 * @param phone
	 * @return
	 */
	public AdResult getCode(String phone);

	/**用户登录接口
	 * @param phone
	 * @param password
	 * @return
	 */
	public AdResult login(String phone, String login_password);
	
	/**获取用户详细信息
	 * @param id
	 * @return
	 */
	public AdResult getUserInfo(String id,String token);
	/**获取用户余额
	 * @param id
	 * @return
	 */
	public AdResult getBalance(String id);
	/**修改个人信息不带头像的方法
	 * @param user
	 * @return
	 */
	public AdResult update(User user); 
	
	/**修改个人信息时带有头像的情况
	 * @param user
	 * @param file
	 * @return
	 */
	public AdResult update(User user,HttpServletRequest request,CommonsMultipartFile file);
	/**获取用户自己发布的广告
	 * @param user_id
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 */
	public AdResult getMyAds(String user_id,int pageIndex,int pageSize);
	
	/**删除广告
	 * @param id
	 * @return
	 */
	public AdResult deleteAd(String id);
	
	/**保存用户位置信息
	 * @param userLocation
	 * @return
	 */
	public AdResult saveUserLocation(UserLocation userLocation);
	
	/**
	 * 获取行业职业
	 * @return
	 */
	public AdResult getJobCode();
	
	
	/**
	 * 修改我的类型
	 * @return
	 */
	public AdResult updateMyType(User user);
	
	
	public String getMyType(String id);

	/**
	 * 获取所有用户
	 * @return
	 */
	public AdResult findAll(double lon,double lat,int radius);
	
	/**
	 * 根据当前用户的位置获取周边用户
	 * @param lon
	 * @param lat
	 * @param radius
	 * @return
	 */
	public AdResult findAllAround(double lon,double lat,Double radius);

	/**
	 * 置顶当前广告
	 * @param id
	 * @return
	 */
	public AdResult pushAdTop(String ad_id);

	/**
	 * 通过手机号获取用户详细信息
	 * @param phone
	 * @return
	 */
	public AdResult getUserInfoByPhone(String phone);

	/**
	 * 注册一致性变更
	 * @param username
	 * @param phone
	 * @param user_id
	 * @return
	 */
	public AdResult saveAndBundleUserName(String username, String phone, String user_id,String devicetype);

	/**
	 * 免密登录
	 * @param phone
	 * @param code
	 * @param username
	 * @return
	 */
	public AdResult loginWithoutPwd(String phone, Integer code,String devicetype);
	
	/**
	 * 锁定用户支付功能
	 * @param user_id
	 * @return
	 */
	public AdResult lockUserPay(String user_id);

	/**
	 * 检查用户是否已经设置了支付密码
	 * @param user_id
	 * @return
	 */
	public AdResult isSettingPayPassword(String user_id,String token);

	/**
	 * 保存用户的支付密码
	 * @param user_id
	 * @param paypassword
	 * @return
	 */
	public AdResult savePayPassword(String user_id, String paypassword);
	
	/**
	 * 检查用户账号余额是否够，并且是否已经和支付宝关联
	 * @param user_id
	 * @param total_amount
	 * @return
	 */
	public AdResult checkIsAssociatedAliPay(String user_id,String total_amount,String token);
	
	/**
	 * 获取用户奖励
	 * @param username
	 * @return
	 */
	public AdResult getAllMyPushAds(String user_id, Integer pageIndex, Integer pageSize);

	/**
	 * 获取雷区广告
	 * @param lng
	 * @param lat
	 * @return
	 */
	public AdResult getBomb(Double lon, Double lat,Double radius);

	/**
	 * 获取我的关注
	 * @param user_id
	 * @return
	 */
	public AdResult getMyConcern(String user_id,Integer pageIndex,Integer pageSize);

	/**
	 * 获取我的收藏
	 * @param user_id
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 */
	public AdResult getMyCollection(String user_id, Integer pageIndex, Integer pageSize);
	
	/**
	 * 反馈
	 * @param feed
	 * @return
	 */
	public AdResult feedBack(Feed feed,HttpServletRequest request,CommonsMultipartFile file);
	

}
 